package com.nd.demo.dao;

import com.nd.demo.bean.IssueBean;
import com.nd.demo.bean.Issue_ReplayBean;
import com.nd.demo.bean.ReplayBean;
import com.nd.demo.bean.UserBean;
import com.nd.demo.bean.JobNumBean;
import com.nd.demo.bean.PermissionBean;
import com.nd.demo.bean.RoleBean;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper {
    /**
     * 调用该接口中的方法，实现对数据库 tbl_user表的 的查询操作，传入两个查询条件，用户
     名和密码
     * @param userName
     * @param password
     * @return
     */
    public UserBean userLogin(String userName, String password);

    /**
     * 传入用户名，根据用户名删除数据库的对应记录
     * @param username
     * @return 返回删除语句影响的数据库表的行数
     */
    public int deleteUserByUserName(String username);
    /**
     * 根据主键(userName更新该对应的其它数据)
     * @param userBean 参数为UserBean类的对象，UserBean类的对象中可以包含用户名，密码，
    姓名，电话等信息，简化了方法形参需要传递N个参数
     * @return
     */
    public int updateByUserName(UserBean userBean);

    /**
     * 往user表中插入数据的方法
     * @param userBean
     * @return
     */
    public int insertUser(UserBean userBean);

    /**
     * 查询user表的所有记录
     * @return 返回一个List集合，集合中的第一个元素一个UserBean,MyBatis会根据方法返回类
    型，自动将表中数据映射为方法的返回结果
     */
    public List<UserBean> selectAllUser();

    /**
     * 查询所有问题数据
     * @return
     */
    public List<IssueBean> selectAllIssue();

    /**
     * 查询问题答案
     * @return
     */
    public ReplayBean selectReplay(String replayId);


    /**
     * 查询问题-答案的匹配
     * @return
     */
    public List<Issue_ReplayBean> selectIssueReplay(String issueId);



    /**
     * 查询所有用户相关权限
     * @return 返回一个List集合，集合中的每一个元素是一个UserRightsBean,
     * Mybatis会根据方法的返回类型，自动地将表中地数据映射为方法地返回内容
     */

    public List<PermissionBean> selectAllPermission();



    /**
     * 根据主键（用户编码）更新相关权限
     * 参数为PermissionBean类的对象，PermissionBean类的对象中可以包含用户名等信息，
     * 简化了需要传递多个参数的情况
     * @return 返回一个整形变量用于判断是否更新成功
     */
    public int updatePermissionById(PermissionBean permissionBean);


    /**
     * 传入主键（用户编码）删除其相应的权限
     * @return
     */
    public int addPermission(PermissionBean permissionBean);


    /**
     *根据id删除权限
     * @return
     */
    public int deletePermissionById(String permission_id);
    
    /**
     *查询所有角色
     */
    public List<RoleBean> selectAllRole();

    /**
     *修改角色
     */
    public int updateRoleById(RoleBean roleBean);

    /**
     *添加角色
     */
    public int addRole(RoleBean roleBean);

    /**
     *删除角色
     */
    public int deleteRoleById(String role_id);
    
    /**
     *查询所有工号
     */
    public List<JobNumBean> selectAllJobNum();
    /**
     *修改工号
     */
    public int updateJobNumById(JobNumBean jobNumBean);
    /**
     *添加工号
     */
    public int addJobNum(JobNumBean permissionBean);
    /**
     *删除工号
     */
    public int deleteJobNumById(String job_num_id);

}
